简要介绍如何在docker
环境下利用Grafana和Prometheus对系统进行监控。
软件安装
在给Grafana软件集成LDAP实现单点登录一文中简要说明了如何基于docker
安装Grafana
,本节出于简化使用与维护的目的,将Grafana
与Prometheus
合并到一个docker-compose.yml
文件中,相关的文件如下
docker-compose.yml
文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
version: "3"
services:
prometheus:
image: prom/prometheus:latest
container_name: "prometheus_custom"
restart: always
ports:
- "9090:9090"
volumes:
- "$PWD/prometheus.yml:/etc/prometheus/prometheus.yml"
- "$PWD/prometheus_data:/prometheus"
grafana:
image: grafana/grafana
container_name: "grafana_custom"
ports:
- "3000:3000"
restart: always
volumes:
- "$PWD/grafana_data:/var/lib/grafana"
- "$PWD/ldap.toml:/etc/grafana/ldap.toml"
environment:
# 管理员账号
- GF_SECURITY_ADMIN_USER=admin
# 管理员密码
- GF_SECURITY_ADMIN_PASSWORD=xxx
- GF_AUTH_LDAP_ENABLED=true
|
ldap.toml
文件,用于Grafana
接入LDAP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
[[servers]]
host = "10.10.0.55"
port = 389
use_ssl = false
start_tls = false
ssl_skip_verify = false
bind_dn = "cn=xxx,dc=chinahirain,dc=com"
bind_password = 'xxx'
search_filter = "(uid=%s)"
search_base_dns = ["dc=chinahirain,dc=com"]
[servers.attributes]
name = "givenName"
surname = "displayName"
username = "uid"
#member_of = "cn"
email = "mail"
[[servers.group_mappings]]
group_dn = "grafana-admins"
org_role = "Admin"
[[servers.group_mappings]]
group_dn = "grafana-editors"
org_role = "Editor"
[[servers.group_mappings]]
group_dn = "*"
org_role = "Viewer"
|
prometheus.yml
文件用于配置要接入Prometheus
的系统
1
2
3
4
5
6
7
8
9
10
11
|
global:
scrape_interval: 15s # 默认抓取周期
external_labels:
monitor: 'codelab-monitor'
scrape_configs:
- job_name: 'node-exporter' #服务的名称
scrape_interval: 5s
metrics_path: /metrics #获取指标的url
static_configs:
# 这个为监听指定服务服务的ip和port
- targets: ['10.30.31.56:9188','10.30.5.113:9188']
|
上述这些文件必须位于同一目录下,之后通过docker-compose
启动
1
2
3
|
root@lucumt:~/grafana# ls
docker-compose.yml grafana_data ldap.toml prometheus.yml prometheus_data
root@lucumt:~/grafana# docker-compose up -d
|
系统接入
主要基于node exporter
实现,参考 centos7安装node export 一文进行相关操作。
-
在安装有node exporter
服务器上的/usr/local/bin/
目录下复制名为node_exporter
的文件到目标机器的/usr/local/bin/
目录下,并将其赋予可执行权限
1
|
chmod +x /usr/local/bin/node_exporter
|
-
执行vi /etc/systemd/system/node_exporter.service
并输入下述内容
1
2
3
4
5
6
7
8
9
10
|
[Unit]
Description=cicd_exporter
After=network.target
[Service]
ExecStart=/usr/local/bin/node_exporter --web.listen-address=:9188
Restart=on-failure
[Install]
WantedBy=multi-user.target
|
-
执行下述命令将其设置为Linux
服务同时开机自启动
1
|
systemctl daemon-reload && systemctl start node_exporter && systemctl enable node_exporter
|
-
在目标机器的浏览器中输入http://127.0.0.1:9188
若能正常显示,则表示node_exporter
安装成功
-
在安装Grafana
的服务器上找到前述的prometheus.yml
,在其targets
下面添加对应的node_exporter
服务,然后通过docker-compose restart
重启相关服务
-
在Grafana
中查看新添加的服务器是否集成成功