User Tools

Site Tools


hashicorp_consul

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
hashicorp_consul [2026/11/01 12:12]
val [Добавление и мониторинг web сервисов]
hashicorp_consul [2026/11/01 15:14] (current)
val
Line 6: Line 6:
 </​code>​ </​code>​
 ==== Добавление и мониторинг web сервисов ==== ==== Добавление и мониторинг web сервисов ====
-  * [[Язык программирования Python#​Доступ к каталогу по http]]+  * [[Язык программирования Python#​Доступ к каталогу по http]] ​на gate
 <​code>​ <​code>​
-server$ curl --request PUT \ +$ curl --request PUT \ 
-  --url http://localhost:​8500/​v1/​agent/​service/​register \+  --url http://server:​8500/​v1/​agent/​service/​register \
   --header '​Content-Type:​ application/​json'​ \   --header '​Content-Type:​ application/​json'​ \
   --data '{   --data '{
     "​ID":​ "​web-app-N",​     "​ID":​ "​web-app-N",​
     "​Name":​ "​web-service",​     "​Name":​ "​web-service",​
-    "​Address":​ "​192.168.X.10",+    "​Address":​ "​192.168.X.1",
     "​Port":​ 8N,     "​Port":​ 8N,
     "​Check":​ {     "​Check":​ {
       "​Name":​ "Web App HTTP Check",​       "​Name":​ "Web App HTTP Check",​
-      "​HTTP":​ "​http://​192.168.X.10:8N/",+      "​HTTP":​ "​http://​192.168.X.1:8N/",
       "​Interval":​ "​10s",​       "​Interval":​ "​10s",​
       "​Timeout":​ "​1s"​       "​Timeout":​ "​1s"​
Line 25: Line 25:
 ... ...
  
-server$ curl -s "​http://​localhost:​8500/​v1/​health/​service/​web-service"​+$ curl -s "​http://​server:​8500/​v1/​health/​service/​web-service"​ | ... 
 +  или 
 +$ curl -s "​http://​server:​8500/​v1/​health/​service/​web-service?passing=1" ​| ...
  
-server$ curl -s "http://localhost:8500/​v1/​health/​service/​web-service?​passing=1"​+... jq '.[] | .Node.Node as $node | .Service.ID as $sid | .Checks[] | {Node: $node, ServiceID: $sid, CheckName: .Name, Status: .Status}'​
 </​code>​ </​code>​
   * [[Сервис Prometheus]]   * [[Сервис Prometheus]]
Line 34: Line 36:
 jq '[{ "​targets":​ [ .[] | "​\(.Service.Address):​\(.Service.Port)"​ ], "​labels":​ { "​job":​ "​web-service"​ } }]' \ jq '[{ "​targets":​ [ .[] | "​\(.Service.Address):​\(.Service.Port)"​ ], "​labels":​ { "​job":​ "​web-service"​ } }]' \
 | tee /​etc/​prometheus/​targets.json | tee /​etc/​prometheus/​targets.json
 +</​code>​
  
-server$ ​###curl --request PUT http://​localhost:​8500/​v1/​agent/​service/​deregister/​web-app-N +==== Удаление сервиса ==== 
-...+<​code>​ 
 +server$ ID=web-app-N 
 + 
 +server$ curl --request PUT http://​localhost:​8500/​v1/​agent/​service/​deregister/​$ID
 </​code>​ </​code>​
 ==== Пример с node-exporter ==== ==== Пример с node-exporter ====
Line 52: Line 58:
   http://​server:​8500/​v1/​agent/​service/​register   http://​server:​8500/​v1/​agent/​service/​register
   ​   ​
-clientN:​~# ​cat register.sh+clientN:​~# ​crontab -l 
 +</​code><​code>​ 
 +@reboot sleep 10; /​usr/​local/​bin/​register-in-consul.sh 
 +</​code><​code>​
 #!/bin/bash #!/bin/bash
  
Line 73: Line 82:
   }" \   }" \
   http://​server:​8500/​v1/​agent/​service/​register   http://​server:​8500/​v1/​agent/​service/​register
 +</​code>​
 +
 +==== Пример с windows-exporter ====
 +
 +<​code>​
 +PS> mkdir C:\Scripts
 +
 +PS> notepad C:​\Scripts\register-in-consul.ps1
 +</​code><​code>​
 +$Hostname = [System.Net.Dns]::​GetHostName()
 +$ServiceId = "​windows-exporter-$Hostname"​
 +
 +$IpAddress = (Get-NetIPAddress -AddressFamily IPv4 | 
 +    Where-Object { $_.InterfaceAlias -notlike "​*Loopback*"​ -and $_.IPAddress -notlike "​169.254.*"​ } | 
 +    Select-Object -First 1).IPAddress
 +
 +$Body = @{
 +    ID      = $ServiceId
 +    Name    = "​windows-exporter"​
 +    Address = $IpAddress
 +    Port    = 9182
 +    Meta    = @{
 +        hostname = $Hostname
 +    }
 +} | ConvertTo-Json -Compress
 +
 +$Uri = "​http://​server:​8500/​v1/​agent/​service/​register"​
 +Invoke-RestMethod -Method Put -Uri $Uri -ContentType "​application/​json"​ -Body $Body
 +</​code><​code>​
 +PS> PowerShell.exe -ExecutionPolicy Bypass -File C:​\Scripts\register-in-consul.ps1
 +
 +PS Admin> ​
 +$Action = New-ScheduledTaskAction -Execute "​PowerShell.exe"​ -Argument "​-NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File C:​\Scripts\register-in-consul.ps1"​
 +$Trigger = New-ScheduledTaskTrigger -AtStartup
 +$Trigger.Delay = "​PT10S"​
 +Register-ScheduledTask -TaskName "​RegisterInConsul"​ -Action $Action -Trigger $Trigger -User "NT AUTHORITY\SYSTEM"​ -Force
 +
 +PS Admin> Get-ScheduledTask -TaskName "​RegisterInConsul"​
 </​code>​ </​code>​
hashicorp_consul.1793524372.txt.gz · Last modified: 2026/11/01 12:12 by val