Répertoire d'articles
introduction
L'importance de la surveillance de cluster pour une application de production est évidente. Aujourd'hui, nous examinerons la pratique de la surveillance des clusters de clusters. Pour ceux qui ne sont pas familiers avec les composants liés à Clickhouse, il est nécessaire d'introduire certains outils dans cette section.
chproxy
Tout d'abord, lorsque nous utilisons le cluster ck, nous utilisons généralement chproxy, un outil proxy open source, qui est principalement utilisé pour des opérations telles que l'équilibrage de charge, le contrôle de la concurrence et le contrôle d'accès des utilisateurs.
gravitation
grafana prend en charge plusieurs sources de données et un affichage graphique riche. C'est un outil d'affichage d'indicateur de surveillance visuelle magnifique et puissant.
Prométhée
La surveillance nous oblige à collecter des données système, nous avons donc également besoin d'un endroit pour stocker les données collectées en continu, nous utilisons donc ici prometheus, une excellente base de données de séries chronologiques.
Configuration de l'installation
chproxy
- Téléchargement
Nous sélectionnons la dernière version des versions .
# 下载
wget https://github.com/Vertamedia/chproxy/releases/download/v1.14.0/chproxy-linux-amd64-v1.14.0.tar.gz
# 解压
tar zxvf chproxy-linux-amd64-v1.14.0.tar.gz
- Configuration
Ensuite, créez un nouveau fichier de configurationconfig.yml
, il y a un exemple de référence de configuration dans github .
Je configure ici deux nœuds, le nom d'utilisateur estdefault
et le mot de passe est vide. Vous pouvez personnaliser le port d'écoute, le 19000 que j'ai configuré ici, sera utilisé dans le prochain prometheus.
# config.yml简单配置,
server:
http:
listen_addr: ":19000"
allowed_networks: ["192.168.9.225","192.168.9.226"]
users:
- name: "default"
to_cluster: "dc_sit"
to_user: "default"
password: ""
clusters:
- name: "dc_sit"
nodes: [
"dc-sit-225:8123",
"dc-sit-226:8123"
]
heartbeat_interval: 30s
users:
- name: "default"
password: ""
Commande de démarrage :./chproxy -config=config.yml
si le journal s'imprime comme suit avec succès, il s'agit d'un démarrage normal. Sinon, gérez l'exception en fonction de l'invite.
INFO: 2020/05/12 04:58:13 main.go:53: Loading config "config.yml": successful
INFO: 2020/05/12 04:58:13 main.go:152: Serving http on ":19000"
- tester
# 外网限制
sun_mac:~ sun$ echo 'SELECT 1' | curl 'http://dc-sit-225:19000/?user=default' --data-binary @-
http connections are not allowed from 192.168.64.49:62164
# 内网通过
[root@dc-sit-225 ~]# echo 'SELECT 1' | curl 'http://dc-sit-225:19000/?user=default' --data-binary @-
1
- chproxy supprime les restrictions de réseau
Par défaut, chproxy a un contrôle de sécurité, car le mot de passe du compte est configuré dans le proxy, ilallowed_networks: ["0.0.0.0/0"]
n'est pas recommandé de restreindre ce type de réseau ouvert. Mais si vous souhaitez assurer vous-même la sécurité du réseau, vous pouvez égalementhack_me_please: true
désactiver toutes les vérifications liées à la sécurité en configurant la couche la plus externe . En commentant laallowed_networks
configuration précédente de cette manière , elle peut être ouverte au monde extérieur. Cette section contient des instructions sur github .
Prométhée
wget https://github.com/prometheus/prometheus/releases/download/v2.18.1/prometheus-2.18.1.linux-amd64.tar.gz
- Configuration
Modifier le fichier de configuration après décompressionprometheus.yml
, modifier principalement unescrape_configs
partie de la configuration, ici nous spécifions la dénominationclickhouse-chproxy
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'clickhouse-chproxy'
scrape_interval: 10s
static_configs:
- targets: ['dc-sit-225:19000']
labels:
instance: 'dc_sit'
Commande de démarrage :./prometheus --config.file=prometheus.yml
- Après vérification
, ouvrez http: // localhost: 9090 / cibles pour vérifier si l'état de chproxy est normal.
gravitation
- Pour installer
grafana, nous pouvons utiliser une simple installation de docker.
# 获取镜像
docker pull grafana/grafana
# 后台启动容器,将23000映射到容器的3000
docker run -d -p 23000:3000 --name=my-grafana -v /data/grafana:/var/lib/grafana grafana/grafana
- Connexion
Ouvrez http: // localhost: 23000 / , compte / mot de passe: admin / admin.
Surveillance de la configuration
Configurer les sources de données
Paramètres -> Sources de données -> Ajouter une source de données -> sélectionnez le type de prometheus.
- les paramètres
sont modifiés en fonction de leur propre configuration, je les ai nommés iciPrometheus-225
, puis Save & Test
Importer un modèle
Téléchargez d'abord le modèle d'exportateur de chproxy et enregistrez-le sous chproxy.json. Avant de sélectionner l' importation du signe + dans grafana , le
nom peut être personnalisé et la source de données prometheus sélectionne le Prometheus-225 que nous avons configuré ci-dessus, puis l'importe.
Voir l'effet
Le tableau de bord peut voir plusieurs indicateurs tels que le nombre de demandes dans chaque période, la durée de la demande, le nombre d'utilisateurs simultanés et l'état de chaque nœud. Il est très pratique pour nous d'obtenir l'état de fonctionnement du cluster.
fin
En raison du facteur d'espace, cette section décrit principalement la partie surveillance du cluster. Il existe également des modules importants, tels que le gestionnaire d'alertes de composants d'alarme fourni par prometheus et le service de crochet d'alarme.
En outre, la combinaison de grafana et de prometheus est également couramment utilisée pour surveiller l'état de chaque nœud dans le cluster, node_exporter , et clickhouse surveillance de composant unique clickhouse_exporter . Si le cluster ci-dessus peut être configuré, je pense qu'il n'y aura pas de gros problème pour un seul nœud.