Grafana+prometheus 监控
1. 解压prometheus压缩包
# 解压
tar -zxvf prometheus-2.45.4.linux-amd64.tar.gz
# 改名
mv prometheus-2.45.4.linux-amd64 prometheus
mv prometheus /opt/module
cd /opt/module
2. 修改配置文件
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# 监控作业的名称
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
# 表示静态目标配置,就是固定从某个 target 拉取数据
# 默认方案为 HTTP
static_configs:
- targets: ["localhost:9019"]
# 添加如下 clickhouse 监控
- job_name: 'clickhouse'
static_configs:
- targets: ['10.10.204.16:9363']
1、global 配置块:控制 Prometheus 服务器的全局配置
➢ scrape_interval:配置拉取数据的时间间隔,默认为 1 分钟。
➢ evaluation_interval:规则验证(生成 alert)的时间间隔,默认为 1 分钟。
2、rule_files 配置块:规则配置文件
3、scrape_configs 配置块:配置采集目标相关, prometheus 监视的目标。Prometheus 自身的运行信息可以通过 HTTP 访问,所以 Prometheus 可以监控自己的运行数据
➢ job_name:监控作业的名称
➢ static_configs:表示静态目标配置,就是固定从某个 target 拉取数据
➢ targets :指定监控的目标 ,其实就是从哪儿拉取数据 。
3. 启动prometheus
nohup ./prometheus --config.file=prometheus.yml --web.listen-address="0.0.0.0:9019" > ./prometheus.log 2>&1 &
--web.listen-address="0.0.0.0:9019"这个可以让任何IP都可以访问9019端口
打开web端:http://10.10.204.16:9363/metrics
可以看到以下供Prometheus采集用的数据:
nohup ./prometheus --config.file=prometheus.yml --web.listen-address="0.0.0.0:9019" > ./prometheus.log 2>&1 &
访问 webUI 页面
http://10.10.204.16:9019
在Status-Targets中可以看到配置的采集目标:
4. 安装Grafana
Grafana:https://grafana.com/grafana/download
yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-10.4.2-1.x86_64.rpm
可执行文件在cd /usr/sbin/目录下,配置文件在/etc/grafana下
- To start the service, run the following commands:
systemctl daemon-reload
systemctl start grafana-server
systemctl status grafana-server
http://10.10.204.16:3000
#打不开网页,换个浏览器就打开了。。kao
5. 添加数据源
PMM监控安装
监控 ClickHouse 集群环境通常包括以下几个步骤:
- 安装 PMM Server
- 安装 PMM Client
- 配置 ClickHouse 以支持监控
- 连接 ClickHouse 到 PMM Server
- 查看和分析监控数据
1. 安装 PMM Server
Server端
docker pull percona/pmm-server
docker create --volume /docker --name pmm-data percona/pmm-server:latest bash
docker run --detach --restart always --publish 443:443 --volumes-from pmm-data --name pmm-server percona/pmm-server:latest
a. 第一步:创建数据容器
docker create --volume /docker --name pmm-data percona/pmm-server:latest bash
这个命令执行了以下操作:
- docker create: 创建一个新的 Docker 容器,但不启动它。create 用于设置容器,但需要另外使用 start 命令来运行。
- --volume /docker: 在容器内创建一个名为 /docker 的卷。这是一个数据卷,用于存储 PMM 服务器的数据,使得数据可以持久化存储,即使容器被删除,数据仍然可以保留。
- --name pmm-data: 为这个容器设置一个名称 pmm-data,这样你可以轻松地引用它。
- percona/pmm-server:latest: 指定使用的 Docker 镜像,这里使用的是 Percona 的 PMM 服务器镜像的最新版本。
- bash: 这是容器启动时要运行的主命令。在这个情况下,命令实际上并不重要,因为这个容器的目的是仅仅用来持久化数据存储,而不是用来运行 PMM 服务。
b. 第二步:运行 PMM 服务器容器
docker run --detach --restart always --publish 443:443 --volumes-from pmm-data --name pmm-server percona/pmm-server:latest
这个命令执行了以下操作:
- docker run: 创建并启动一个 Docker 容器。
- --detach: 以分离模式运行容器,这意味着 Docker 会在后台运行这个容器。
- --restart always: 设置容器的重启策略为总是重启。这确保了即使 Docker 守护进程重启或容器退出,容器会自动重启。
- --publish 443:443: 将容器的 443 端口映射到宿主机的 443 端口。PMM 服务器使用 HTTPS,这通常使用 443 端口,这个映射允许从宿主机外部访问 PMM 服务器。
- --volumes-from pmm-data: 这个选项告诉 Docker 从先前创建的 pmm-data 容器中挂载卷。这样,PMM 服务器的所有数据都将存储在 pmm-data 容器指定的卷中,确保数据的持久化。
- --name pmm-server: 为这个容器设置一个名称 pmm-server。
- percona/pmm-server:latest: 使用 Percona 的 PMM 服务器镜像的最新版本
被监控节点
wget https://downloads.percona.com/downloads/pmm2/2.41.0/binary/tarball/pmm2-client-2.41.0.tar.gz
2. 安装 PMM Client
a. 二进制安装
tar -xvf pmm2-client-2.41.0.tar.gz -C /usr/local/
cd /usr/local/pmm2-client-2.41.0
编译安装
export PMM_DIR=/usr/local/percona/pmm2
echo $PMM_DIR
./install_tarball
过程:
[root@localhost pmm2-client-2.41.0]# export PMM_DIR=/usr/local/percona/pmm2
[root@localhost pmm2-client-2.41.0]# echo $PMM_DIR
/usr/local/percona/pmm2
[root@localhost pmm2-client-2.41.0]# ./install_tarball
Installing into /usr/local/percona/pmm2...
[root@localhost pmm2-client-2.41.0]#
PMM Client的安装路径在/usr/local/percona/pmm2,目录结构如下:
[root@localhost pmm2-client-2.41.0]# cd /usr/local/percona/pmm2/
[root@localhost pmm2]# ll
total 0
drwxr-xr-x 2 root root 68 Apr 24 10:39 bin
drwxr-xr-x 4 root root 54 Apr 24 10:39 collectors
drwxr-xr-x 2 root root 28 Apr 24 10:39 config
drwxr-xr-x 2 root root 208 Apr 24 10:39 exporters
drwxr-xr-x 2 root root 95 Apr 24 10:39 tools
[root@localhost pmm2]#
#添加环境变量
[root@localhost pmm2]# vi /etc/profile
export PMM_DIR=/usr/local/percona/pmm2
export PATH=$PATH:$PMM_DIR/bin
[root@localhost pmm2]# source /etc/profile
[root@localhost pmm2]#
[Unit]
Description=pmm-agent
After=time-sync.target network.target
[Service]
Type=simple
ExecStart=/usr/local/percona/pmm2/bin/pmm-agent --config-file=/usr/local/percona/pmm2/config/pmm-agent.yaml
Restart=always
RestartSec=2s
StandardError=file:/var/log/pmm-agent.log
[Install]
WantedBy=multi-user.target
##
[root@localhost ~]# cd /usr/lib/systemd/system
[root@localhost system]# vi pmm-agent.service
[root@localhost system]# cat pmm-agent.service
[Unit]
Description=pmm-agent
After=time-sync.target network.target
[Service]
Type=simple
ExecStart=/usr/local/percona/pmm2/bin/pmm-agent --config-file=/usr/local/percona/pmm2/config/pmm-agent.yaml
Restart=always
RestartSec=2s
StandardError=file:/var/log/pmm-agent.log
[Install]
WantedBy=multi-user.target
[root@localhost system]#
[root@localhost system]#
[root@localhost system]#
[root@localhost system]#
[root@localhost system]# systemctl daemon-reload
[root@localhost system]#
[root@localhost system]#
[root@localhost system]#
[root@localhost system]# systemctl start pmm-agent
[root@localhost system]# systemctl status pmm-agent
● pmm-agent.service - pmm-agent
Loaded: loaded (/usr/lib/systemd/system/pmm-agent.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2024-04-24 13:47:50 CST; 6s ago
Main PID: 2606302 (pmm-agent)
Tasks: 8 (limit: 75239)
Memory: 39.1M
CGroup: /system.slice/pmm-agent.service
└─2606302 /usr/local/percona/pmm2/bin/pmm-agent --config-file=/usr/local/percona/pmm2/config/pmm-agent.yaml
Apr 24 13:47:50 localhost.localdomain systemd[1]: Started pmm-agent.
[root@localhost system]#
[root@localhost system]#
至此,PMM Client安装完毕。
b. rpm包安装
[root@ceelake01 soft]# rpm -ivh pmm2-client-2.41.0-6.el8.x86_64.rpm
warning: pmm2-client-2.41.0-6.el8.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 8507efa5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:pmm2-client-2.41.0-6.el8 ################################# [100%]
[root@ceelake01 soft]# systemctl status pmm-agent
● pmm-agent.service - pmm-agent
Loaded: loaded (/usr/lib/systemd/system/pmm-agent.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2024-04-26 09:30:42 EET; 1min 15s ago
Main PID: 184845 (pmm-agent)
CGroup: /system.slice/pmm-agent.service
└─184845 /usr/sbin/pmm-agent --config-file=/usr/local/percona/pmm2/config/pmm-agent.yaml
Apr 26 09:30:42 ceelake01 pmm-agent[184845]: time="2024-04-26T09:30:42.657+02:00" level=info msg="Using /usr/local/percona/p...t=main
Apr 26 09:30:42 ceelake01 pmm-agent[184845]: time="2024-04-26T09:30:42.657+02:00" level=info msg="Using /usr/local/percona/p...t=main
Apr 26 09:30:42 ceelake01 pmm-agent[184845]: time="2024-04-26T09:30:42.657+02:00" level=info msg="Using /usr/local/percona/p...t=main
Apr 26 09:30:42 ceelake01 pmm-agent[184845]: time="2024-04-26T09:30:42.657+02:00" level=info msg="Using /usr/local/percona/p...t=main
Apr 26 09:30:42 ceelake01 pmm-agent[184845]: time="2024-04-26T09:30:42.657+02:00" level=info msg="Runner capacity set to 32....runner
Apr 26 09:30:42 ceelake01 pmm-agent[184845]: time="2024-04-26T09:30:42.657+02:00" level=info msg="Window check connection ti...ur(s)"
Apr 26 09:30:42 ceelake01 pmm-agent[184845]: time="2024-04-26T09:30:42.657+02:00" level=info msg=Starting... component=client
Apr 26 09:30:42 ceelake01 pmm-agent[184845]: time="2024-04-26T09:30:42.657+02:00" level=error msg="PMM Server address is not...client
Apr 26 09:30:42 ceelake01 pmm-agent[184845]: time="2024-04-26T09:30:42.658+02:00" level=info msg="Starting local API server ...r/JSON
Apr 26 09:30:42 ceelake01 pmm-agent[184845]: time="2024-04-26T09:30:42.659+02:00" level=info msg=Started. component=local-server/JSON
Hint: Some lines were ellipsized, use -l to show in full.
[root@ceelake01 soft]#
[root@ceelake01 soft]#
完成PMM Client安装后,需要做的事情有:
- 向PMM服务器注册节点;
- 根据类型配置和添加业务。
3. 配置 ClickHouse 以支持监控
9363端口开启
4. 连接 ClickHouse 到 PMM Server
a. 数据源1:ClickHouse-metrics对接PMM
ⅰ. 配置 PMM 客户端以连接到 PMM 服务器
pmm-admin config --server-insecure-tls --server-url=https://admin:admin@172.16.171.31:443
被监控机执行,此处URL是PMM服务端
###结果##
[root@localhost system]# pmm-admin config --server-insecure-tls --server-url=https://admin:admin@172.16.171.31:443
Checking local pmm-agent status...
pmm-agent is running.
Registering pmm-agent on PMM Server...
Registered.
Configuration file /usr/local/percona/pmm2/config/pmm-agent.yaml updated.
Reloading pmm-agent configuration...
Configuration reloaded.
Checking local pmm-agent status...
pmm-agent is running.
[root@localhost system]#
[root@localhost system]# pmm-admin status
Agent ID : /agent_id/da142ba5-31df-4c30-a753-7e5abae7709d
Node ID : /node_id/d6c3e869-991d-4770-9e3a-c341b5ba21b8
Node name: localhost.localdomain
PMM Server:
URL : https://172.16.171.31:443/
Version: 2.41.2
PMM Client:
Connected : true
Time drift : 140.753µs
Latency : 341.281µs
Connection uptime: 100
pmm-admin version: 2.41.0
pmm-agent version: 2.41.0
Agents:
/agent_id/ca0923f9-7b82-4387-9ab1-404f9abf2d96 vmagent Running 42000
/agent_id/db011717-dbd7-436e-9559-df0a49a60ebd node_exporter Running 42001
ⅱ. 添加外部无服务器监控
一个是数据库的,一个是代理chproxy的
节点1:
pmm-admin add external-serverless --external-name=clickhouse-172-16-171-35 --host=172.16.171.35 --listen-port=9363 --metrics-path=/metrics --scheme=http
pmm-admin add external-serverless --external-name=chproxy-172-16-171-35 --host=172.16.171.35 --listen-port=9090 --metrics-path=/metrics --scheme=http
(删除 pmm-admin remove external choproxy-172-16-171-36)
节点2:
pmm-admin add external-serverless --external-name=clickhouse-172-16-171-35 --host=172.16.171.35 --listen-port=9363 --metrics-path=/metrics --scheme=http
pmm-admin add external-serverless --external-name=chproxy-172-16-171-36 --host=172.16.171.36 --listen-port=9090 --metrics-path=/metrics --scheme=http
[root@ceelake01 soft]# pmm-admin add external-serverless --external-name=chproxy-172-16-171-35 --host=172.16.171.35 --listen-port=9090 --metrics-path=/metrics --scheme=http
External Service added.
Service ID : /service_id/b79973f3-78f6-42d4-9495-49423ab2eb79
Service name: chproxy-172-16-171-35
Group : external
https://172.16.171.31/prometheus/targets? (服务端IP) 就可以看到上面接入的数据源
b. ClickHouse作为数据源对接PMM
PMM界面操作:PMM 可以直接通过配置(native|http)接口直接访问ClickHouse作为数据源
界面元素 Data sources→Add data source→ClickHouse配置数据源名称访问地址和用户名密码
端口9000
设置好数据源之后可以看到自带的三个关于clickhouse的dashboard ,直接import就行了。