【AWS】基于Docker搭建监控系统基础(二)
背景上一章讲到了认识服务器这一章讲如何从安装docker到安装基本的监控设施这章你会知道:Docker、Grafana、Loki、Prometheus、Protmail、Node-Exploer基本信息AWS EC2实例 服务器系统版本Ubuntu安装Dockercurl-fsSLhttps://get.docker.com|sh安装dockerdocker --version 查看docker版本确认是否安装如果安装失败请自行排查问题sudosystemctl startdocker--启动dockersudosystemctlenabledocker--关闭docker这些指令在安装后尝试几次就好重要是后续会以compose容器组件的形式启动记得添加权限免得报错sudousermod-aGdockerubuntu --给docker添加权限dockerps-a--查看不报错即可这里是已经搭好了所以会有东西dockercompose version --查看compose版本 如果有则不需要另外安装没有请自行搜索相关教程文件目录准备infra├── grafana├── loki├── prometheus└── promtail基于建立infra一级目录然后建立其余的文件目录举例mkdirinfra --创建infracdinfra --进入mkdirxxx --在该目录下再创建最终我们要做的框架是Grafana 展示层Loki 日志存储Promtail 日志采集Prometheus 指标采集Node Exporter 服务器指标 这个由Compose启动时安装下载即可cAdVisor 容器指标 这个由Compose启动时安装下载即可Compose文件准备与安装部署yaml和yml文件是一个意思配置时注意一下就好了docker config安装部署Lokiwgethttps://raw.githubusercontent.com/grafana/loki/main/cmd/loki/loki-local-config.yamlvimloki-local-config.yaml 编辑查看mkdir-p~/infra/loki/data 创建loki data文件 确认 common: path_prefix: /loki配置文件auth_enabled:falseserver:http_listen_port:3100grpc_listen_port:9096log_level:debuggrpc_server_max_concurrent_streams:1000common:instance_addr:127.0.0.1path_prefix:/lokistorage:filesystem:chunks_directory:/tmp/loki/chunksrules_directory:/tmp/loki/rulesreplication_factor:1ring:kvstore:store:inmemoryquery_range:results_cache:cache:embedded_cache:enabled:truemax_size_mb:100limits_config:metric_aggregation_enabled:trueenable_multi_variant_queries:trueschema_config:configs:-from:2020-10-24store:tsdbobject_store:filesystemschema:v13index:prefix:index_period:24hpattern_ingester:enabled:truemetric_aggregation:loki_address:localhost:3100ruler:alertmanager_url:http://localhost:9093frontend:encoding:protobuf编写Compose 文件vimdocker-compose.ymlservices:grafana:image:grafana/grafanacontainer_name:grafanaports:-3000:3000volumes:-./grafana-data:/var/lib/grafanarestart:unless-stoppedloki:image:grafana/loki:latestcontainer_name:lokiports:-3100:3100command:-config.file/etc/loki/local-config.yamlvolumes:-./loki/loki-local-config.yaml:/etc/loki/local-config.yaml-./loki/data:/lokirestart:unless-stopped启动docoker composedockercompose up-d启动dockercompose down 关闭dockerps查看docker容器状态curllocalhost:3100/ready 访问 http://你的服务器ip:3000 登录grafana 默认账户 admin 密码 admin配置Grafana数据源登录后访问Grafana-Connections-Add new connection 选择lokiURL填写http://loki:3100savetesting 保存安装部署Promtail作用 采集日志 ↓ 发送给 Loki ↓ Grafana 展示 日志链路 Linux日志 ↓ Promtail ↓ Loki ↓ Grafanavim~/infra/promtail/promtail.yaml 编辑promtail配置文件配置文件样板server:http_listen_port:9080positions:filename:/tmp/positions.yamlclients:-url:http://loki:3100/loki/api/v1/pushscrape_configs:-job_name:syslogstatic_configs:-targets:-localhostlabels:job:sysloghost:ec2__path__:/var/log/syslog向docker-compose.yml追加promtail:image:grafana/promtail:latestcontainer_name:promtailvolumes:-./promtail/promtail.yaml:/etc/promtail/config.yml-/var/log:/var/logcommand:--config.file/etc/promtail/config.ymlrestart:unless-stoppeddockercompose up-ddockerps出现 promtail 即配置完成安装部署Node ExporterCompose追加node-exporter:image:prom/node-exportercontainer_name:node-exporterports:-9100:9100volumes:-/:/host:ro,rslavecommand:---path.rootfs/hostrestart:unless-stoppeddockercompose up-d启动curllocalhost:9090/metrics 访问 看里面有 node_cpu_seconds_total node_memory_MemTotal_bytes之类的参数指标即可安装部署prometheusvimprometheus/prometheus.ymlglobal:scrape_interval:15sscrape_configs:-job_name:prometheusstatic_configs:-targets:-prometheus:9090-job_name:nodestatic_configs:-targets:-node-exporter:9100dockercompose up-d启动 然后挂载刚刚装的promtail和prometheuscurllocalhost:9100/metrics 访问查看是否有返回报错则自行查阅解决 访问 http://服务器ip:9090/query 查询up 应该有prometheus和node1安装部署cAdvisorcompose追加cadvisor: image: gcr.io/cadvisor/cadvisor:latest container_name: cadvisor ports: -8080:8080volumes: - /:/rootfs:ro - /var/run:/var/run:ro - /sys:/sys:ro - /var/lib/docker:/var/lib/docker:ro restart: unless-stoppedprometheus追加采集- job_name: cadvisor static_configs: - targets: - cadvisor:8080dockercompose restart prometheus --重启单个容器dockercompose restart --全部重启curlhttp://服务器ip:9090/query up{jobprometheus}1up{jobnode}1up{jobcadvisor}1以上基础搭建就完成了接下来是grafana的展示层dashboard的搭建Grafana Dashboard搭建点击搜索栏或者crtlk 搜索Import DashBoardNode Exporter数据源UID1860 grafana官方模板 或者 较新的10180可以用来查看CPU使用率内存占用磁盘IO网卡流量负载Load文件系统Loki数据源UID13639查看loki日志可以用来查看按容器看日志按服务看日志关键字搜索错误统计cAdvisor数据源Cadvisor exporterUID14282可以用来查看容器数量容器状态资源占用排行注意事项和心得具体的一些安装部署、监控指标怎么看都什么意思等排障和扫盲待下篇会讲这里只简单讲。注意容器的network模式 是host还是bridge 这个很重要会影响到容器之间的访问模式不一致容易踩坑安装部署后一定要立马检查部署是否成功服务器记得开放进站端口范围入口[3000、9100、9090等]用于自己访问或者白名单访问不要被攻击啦~