阿里雲伺服器運行pinode節點
⑴ 阿里雲pi節點用多大的寬頻
使用100m或以上的寬頻網路。
PI將成為全世界矚目的加密數字幣,手機就可以免費挖礦,活躍礦工已經超過3000萬,注冊用戶超過一億,來自全世界200多個國家,其價值潛力遠超越一般認知,也將會成為全世界廣泛流通的數字貨幣,沒有之一。
如果被選上成為普通節點或超級節點,則相當於建立一個世界級銀行網點,收益將會源源不斷!而現在正是PI幣的大紅利期,所以看明白的人都會要搭建屬於自己的節點伺服器。
⑵ 本地測試遠程埠可以聯通但是pinode節點埠打不開
一、預防休眠睡眠功能關閉電腦運行
1、開啟[控制台]
2、點選[電源選項]
3、點選[按下電源按鈕行為]
4、將按下電源鈕、按下睡眠按鈕、(筆記本再多出闔上筆電螢幕)兩個或三個下拉式選項,皆選擇[不進行動作]
5、回上一頁,點選[變更電腦睡眠時間]
6、全部可下拉式選擇[永不]
7、螢幕可設置自動關閉時間或是手動關閉(很多關閉螢幕鍵盤位置不同,網搜)
二、關閉win系統自動更新造成自動重新啟動
1、開啟[設置]
2、點擊[更新與安全性]
3、點擊[進階選項]
4、在暫停更新下,選擇選取日期(下拉式),選擇最後面一天
三、關閉docker自動更新
1、滑鼠移到docker圖標右鍵
2、點擊最上面[Settings]
3、將第二個勾取消(Automatically...)
4、右下點擊[Apply&Restart]
四、檢查其他軟體自動連網更新
部分軟體會自動重新啟動電腦(例如:防毒軟體、辦公室軟體、游戲軟體),這部分請依據軟體名稱網搜取消自動更新方法。
節點的問題排除
一、測埠
我們大家都知道,競選超節首要前提就是必須正確打開埠,打開埠首要前提就是必須開通ipv4公網,下面進入正題:
如何查看埠是否正確打開復制網址到瀏覽器:
https://pi-mods.de/nodeports/
點擊scan,如果發現31401-31403 綠色open,就說明埠開放正常。
埠測試必須在pi node和docker正常運行(running)的前提下,測試才有準確!!!
由於大部分派友用的都是普通家用寬頻,在上網高峰期的時候,測試埠可能會發現有時候31401-31403隻能開一到兩個埠,這是完全正常的,3個開一個,另外兩個肯定也是開的,不放心可以測試多次,有一次全開就行。
二、查看本地區塊高度,只要本地區塊高度有變化就是正常的
圖中紅色框框部分就是區塊高度,由於牆的原因,這里區塊高度有人幾秒鍾變一次,有的幾十秒,幾分鍾,甚至幾十分鍾或者更長時間才變化(這種情況通常是網路狀況不好或者電腦關機或重啟後沒有及時打開程序導致長時間追趕區塊導致),搞不清楚原理的,記住這里有變化就行了。另外還要補充一點就是區塊高度下面有時候出現兩個框框,這是長時間鏈接項目方主伺服器超時導致,這個填寫一次,就不用理會了 ,出現不出現框框都是正常的。0.4.7版本的節點主要測試功能就是當項目方主伺服器鏈接不上或者不存在了,可以通過第三方已知節點帶我們加入恆星區塊鏈網路。
考慮到有的朋友英文太差,我下面簡單的補充下這個界面英文的含義
上面那段英文的意思是:打開節點
你可以運行包含區塊鏈的Node版本,通過打開下面的開關(小紅點),你的計算機將運行一個Docker容器,該容器運行一致性演算法,並使你能夠觀察Pi Testnet(pi測試網路),它會一直開著直到你把它關掉,你的計算機將不再運行區塊鏈。
你是候選節點,我們還沒有選擇參與pi 測試網的超級節點或節點,需要通過KYC,我們將很快做出選擇
三、查看故障排除頁面
常見英文含義:Second秒,minute分鍾,hour 小時,day天,month 月。
其實這個界面懶人只需要關注兩點即可
那就是state:synced!所有的都不用看了,latest block 即使有延遲也是假延遲,看著不舒服的可以刷新。
或者同時按住CTRL+R快捷鍵刷新。
當state不是synced ,只要latest block不是特別離譜延遲幾天也無需理會,程序會自動修復,這個節點程序是自動的,不需要你人為去干預。導致延遲有兩大因素:一是長時間網路異常,例如網線松動接觸不良或者上網高峰期,運營商機房線路故障,這種錯誤,一般網路異常情況解決了,程序能自動修復,如果異常的時間比較久了,程序不能修復,可以通過切換運行區塊鏈的小紅點開關來重啟共識容器區塊鏈程序。一關一開建議間隔20秒以上,以免操作過快導致程序崩潰。當然你也可以重啟電腦來試著解決。二是節點程序本身的bug問題,當網路長時間異常或者意外關機,導致區塊文件損壞或者內部程序出錯,程序無法正常同步了,嘗試了各種方法無果後,只能通過清除區塊來解決,這種方法要慎用,不到萬不得已不建議通過清除區塊來解決問題。關於真假延遲可以通過命令查看,就是那個「每隔1分鍾查看一次節點同步進度」批處理文件,雙擊即可打開
當看到state:Synced 說明沒有延遲,即使有也是假延遲。
當看到最後一行是catching up 後面英文沒有包含.json這幾個字母並且沒有長時間一動不動,都是正常的。
①埠檢測容器:absent表示缺失,exited表示退出,這里無論顯示什麼都是正常狀態,0.4.7無需開啟埠檢測容器:所以顯示缺失,以前埠檢測容器開啟過,現在關閉狀態就是顯示退出。
② 節點狀態:有3種狀態,一開始joining SCP加入恆星網路,後來是Catching up 追趕區塊中,Synced已經同步的。節點這3種狀態根據網路狀況是來回切換的,不能單純看這個來決定節點是否正常。只要不是一直joining SCP都不需要人為干預,保持埠開放,程序會自動調整!
③ outgoing connections外出連接數,即最大能同時與遠端節點鏈接數,系統設置不超過8個,不是0都是正常的;incoming connections:進來的連接數,即最大同時能服務別的節點連接數,系統設置不超過64個;連接數量多少沒一定,主要取決於你的網路穩定性,也不能單獨看這個來決定節點正常與否,如果沒有公網ip,這里會一直顯示0,如果你開通了公網ip,這里只要不是一直顯示為0,節點都是正常狀態。supporting other nodes:這里無論顯示Yes or No 都是正常的。
④consencus container共識容器運行狀態:分4種,首次創建是creating,啟動狀態是starting,正常運行狀態是:running!!!退出exited
⑤ Remove all blockchain data:移除所有區塊數據,建議謹慎操作,測試階段,只有長時間不同步,可以試著進行移除操作,不建議頻繁操作!!! 移除區塊後要記得重新開啟運行區塊的小紅點開關。
Latest block:最近的區塊,這里可以查看區塊延遲,現階段普遍延遲,這塊無論顯示什麼都是正常狀態,Protocol version 協議版本顯示與否都正常,由於牆的問題,安裝日期和可用率都不用在意。
一句話總結:現階段只要埠31401-31403處於open狀態,別的數據都無需太在意。不要看到自己的區塊高度和別人誤差一點點就認為節點不正常了。家庭寬頻出現網路波動是很正常的,當你網路出現波動時,這個時候你的區塊高度肯定和別人有點誤差的,這很正常,程序會自動追趕同步。由於牆的原因,導致有些數據不能及時從項目方伺服器回傳到本地,所以界面上看到的很多數據都不是實時的。
埠能正確開放,你的節點能正常同步你就是一個合格的待選節點!
⑶ 申請pi節點要公網還是家用網
節點是Pi生態系統中的第四個角色,只能運行普通電腦或者伺服器上,Pi節點將負責驗證分, 如果公網IP申請下來,再打開Pi node軟體,
⑷ 兩個伺服器如何搭建pi節點
方法如下:
一、必備條件:1、一台電腦,筆記本或台式都可以,系統win10專業版,8G內存及以上2、阿里雲伺服器,有固定IP,1CPU,2G內存,2M寬頻及以上。(註:阿里雲伺服器已經虛擬化,不支持二次虛擬化,所以不能直接部署Pi節點)二、購買阿里雲伺服器:購買方法:打開官網使用支付寶或淘寶賬號登錄選擇「入門首選」立即購買即可(新用戶僅96元一年,有條件的朋友建議買「最新代產」)操作系統選擇windowsserver2008R2企業版64位中文版、帶寬選擇2M、1CPU2G內存確認購買即可。三、設置雲伺服器埠規則:設置方法:控制台點擊左上角圖標展開菜單,選擇「雲伺服器ECS」點擊你的雲伺服器名稱本實例安全組點擊安全組名稱入方向、手動添加埠規則。四、部署雲服:遠程連接:首先重置實例密碼,改成你的密碼,並立即重啟完成後我們點擊遠程連接,選擇Workbench輸入你的密碼登錄,即可進入雲伺服器桌面,跟我們的電腦一樣。部署方法:1、開始管理工具伺服器管理器角色添加角色下一步網路策略和訪問服務、下一步下一步勾選「網路策略伺服器」和「路由和遠程訪問服務」、下一步安裝、完成後關閉。2、展開「角色」、右擊「路由和遠程訪問」、點擊「配置並啟用路由和遠程訪問」下一步勾選「自定義配置」下一步勾選「VPN」和「NAT」,下一步完成、確定、啟動服務。3、展開「IPv4」、右擊「NAT」、新增介面本地連接、確定勾選「公用介面連接到Internet」及在此介面上啟用NAT,確定右擊「NAT」新增介面內部、確定勾選「專用介面連接到專用網路」確定。4、右擊「路由和遠程訪問」、屬性點擊IPv4、靜態地址池、輸入起始IP與結束IP、確定點擊「安全」、身份驗證方法、勾選第234項、確定然後都選擇「是」,等待完成即可。5、展開「配置」本地用戶和組右擊「用戶」、新用戶設置用戶名pinode、密碼、取消勾選選項、創建完成後關閉右擊「pinode」、屬性撥入、允許訪問、分配靜態IP地址、10.1.0.2、確定保存即可。6、下載TCPMapping工具(已經配置好),解壓到伺服器任意文件夾里打開即可,同時勾選「開機自動運行」。五、本地家庭電腦配置:設置方法:右擊網路圖標打開「網路和Internet」設置VPN、添加VPN連接VPN提供商選擇「windows內置」、連接名稱寫Pi節點、伺服器名稱或地址填寫你的雲伺服器公網IP,VPN類型選擇點對點隧道協議、用戶名與密碼填寫我們前面在伺服器設置的,然後保存點擊「Pi節點」進行連接,發現我們本地IP變成了公網IP。
⑸ 2020-08-25
Prometheus 實現郵件告警(Prometheus+Alertmanager+QQ郵箱或者網易163郵箱,目前測試過這兩種郵箱都可以發送告警郵件)
Prometheus實現郵件告警原理如下:
Prometheus官方有一個附帶的中間件:alertmanager,通過設置rules規則和路由轉發可以實現郵件告警,前提是你需要有一個可以發送郵件的郵件服務端(可以自建或者使用互聯網公司提供的免費郵箱)
告警原理圖
Prometheus完整架構圖
我之前得出的錯誤結論如下:
推薦直接在虛擬機操作系統上直接安裝Prometheus和Alertmanager,不推薦其中任何一方在容器中運行,因為測試過在容器中運行Prometheus和alertmanager,結果出現如下錯誤情況
第一種情況是:我的node-exporter掉線跌機了(手動關機,模擬突然掉線跌機),Prometheus卻提示節點依然在線?有時候卻能夠正常顯示節點掉線跌機,生成告警發送郵件
第二種情況是:我的node-exporter掉線跌機了(手動關機,模擬突然掉線跌機),Prometheus提示節點掉線,告警生成,但是沒有發送郵件,我手動恢復node-exporter後,告警解除,郵件能正常發送郵件提示告警已經解除。。。。
第三種情況是:我的node-exporter掉線跌機了(手動關機,模擬突然掉線跌機),Prometheus提示節點掉線,告警生成,正常成功發送郵件,我手動恢復node-exporter後,告警解除,郵件沒有發送出來。。。。
以上三種情況之前經常出現,當時第一步以為是自己設置的scrape_interval不合理導致的,結果調試幾次,問題沒有解決,第二步以為是自己的伺服器時間沒有做到精確同步,然後我去設置和阿里雲的ntp伺服器同步,結果問題依然沒有解決,第三步,換個方向,把alertmanager遷移到虛擬機操作系統上安裝運行,問題解決!
北京時間是GMT+8小時,有些同志的時間可能是UTC的,但是如果是在要求不太十分精確的情況下,UTC時間是剛剛好等於GMT時間
為了避免時區的混亂,prometheus所有的組件內部都強制使用Unix時間,對外展示使用GMT時間。
要改時區有兩個辦法
1 .修改源碼,重新編譯。
2. 使用 docker 運行 Prometheus,掛載本地時區文件
docker run --restart always -e TZ=Asia/Shanghai --hostname prometheus --name prometheus-server -d -p 9090:9090 -v /data/prometheus/server/data:/prometheus -v /data/prometheus/server/conf/prometheus.yml:/etc/prometheus/prometheus.yml -u root prom/prometheus:v2.5.0
正文開始
安裝alertmanager
容器安裝方式:
docker run -d --name alertmanager -p 9093:9093 -v /usr/local/Prometheus/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager:latest
先在宿主機/usr/local/Prometheus下創建一個文件夾alertmanager,然後在文件夾里創建alertmanager.yml配置文件,待會才能映射到alertmanager容器里的/etc/alertmanager目錄下
global:全局配置
resolve_timeout: 問題解決的超時時間
smtp_from: 發送告警郵件的郵箱賬號
smtp_smarthost: 郵箱 SMTP 服務地址,這里是以QQ郵箱為例,也可以用網易163郵箱,這個和我之前設置zabbix郵件告警時的配置一樣
smtp_auth_username: 如果沒有設置郵箱別名,那就是賬戶名
smtp_auth_password: 郵箱的授權碼,不是 賬戶密碼,你可以在QQ郵箱或者網易163郵箱網頁端設置,開啟 POP3/SMTP 服務時會提示,和配置zabbix郵件告警的時候幾乎一樣
smtp_require_tls: 是否使用 tls,根據環境不同,來選擇開啟和關閉。如果提示報錯 email.loginAuth failed: 530 Must issue a STARTTLS command first,那麼就需要設置為 true。著重說明一下,如果開啟了 tls,提示報錯 starttls failed: x509: certificate signed by unknown authority,需要在 email_configs 下配置 insecure_skip_verify: true 來跳過 tls 驗證。
templates: 告警模板目錄,可以不編寫模板,有默認模板
Subject: '{{ template "email.default.subject" . }}'
html: '{{ template "email.default.html" . }}'
route:報警的分發設置
group_by:分組
group_wait: 分組等待時間
group_interval: 5m 每組時間間隔
repeat_interval: 10m 重復間隔
receiver: 接收方式,請注意!這里的名字要對應下面receivers中的任何一個名字,不然會報錯,這里其實就是選擇方式,有郵箱,企業微信,wehook,victorops等等
receivers:接受方式匯總,即告警方式匯總
例子:
receivers:
- name:'default-receiver'
email_configs:
- to:'[email protected]'
html: '{{ template "alert.html" . }}'
headers: { Subject: "[WARN] 報警郵件test"}
inhibit_rules: 抑制規則
當存在與另一組匹配的警報(源)時,抑制規則將禁用與一組匹配的警報(目標)。
包括源匹配和目標匹配
alertmanager官方是這樣說的
Inhibition
Inhibition is a concept of suppressing notifications for certain alerts if certain other alerts are already firing.
Example: An alert is firing that informs that an entire cluster is not reachable. Alertmanager can be configured to mute all other alerts concerning this cluster if that particular alert is firing. This prevents notifications for hundreds or thousands of firing alerts that are unrelated to the actual issue.
Inhibitions are configured through the Alertmanager's configuration file.
當存在與另一組匹配器匹配的警報(源)時,禁止規則會使與一組匹配器匹配的警報(目標)靜音。目標警報和源警報的equal列表中的標簽名稱都必須具有相同的標簽值。
在語義上,缺少標簽和帶有空值的標簽是同一件事。因此,如果equal源警報和目標警報都缺少列出的所有標簽名稱,則將應用禁止規則。
為了防止警報禁止自身,與規則的目標和源端 都 匹配的警報不能被警報(包括其本身)為真來禁止。但是,我們建議選擇目標匹配器和源匹配器,以使警報永遠不會同時匹配雙方。這很容易進行推理,並且不會觸發此特殊情況。
接著是規則rules
不解釋了,自己研究官方文檔
alertmanager的非容器安裝方式是
wget https://github.com/prometheus/alertmanager/releases/download/v0.20.0/alertmanager-0.20.0.linux-amd64.tar.gz
tar xf alertmanager-0.20.0.linux-amd64.tar.gz
mv alertmanager-0.20.0.linux-amd64 /usr/local/alertmanager
vim /usr/lib/systemd/system/alertmanager.service
[Unit]
Description=alertmanager
Documentation=https://github.com/prometheus/alertmanager
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target
Alertmanager 安裝目錄下默認有 alertmanager.yml 配置文件,可以創建新的配置文件,在啟動時指定即可。
其餘方式和上面一樣
接著是Prometheus,我之前的博客里有寫了容器安裝和非容器安裝的方法,自己去翻閱
然後是在prometheus.yml里修改相關配置
首先去掉alertmanager的注釋,改成IP加你設置的埠號,默認是9093
接著在rule_files: 下面寫下規則文件的絕對路徑,可以是具體文件名,也可以是*,也可以分幾級文件,*默認是全部匹配
接著是被監控項的設置,這里設置完成可以在Prometheus網頁里的targets里看得到
請注意,這里設置的參數名字要和rule規則中設置的參數名字一模一樣,否則你的prometheus服務會無法啟動,然後報錯
如果不在特定的job下設置scrape_interval(優先順序高於全局),則默認採用gobal下的scrape_interval
最後模擬節點掉線,手動關閉node-exporter或者Cadvisor
docker stop node-exporter 或者容器ID
docker stop cadvisor 或者容器ID
或者把up{{job='prometheus'}} == 1 設置成1,反向設置,不用關掉服務,就可以看看告警成不成功
說明一下 Prometheus Alert 告警狀態有三種狀態:Inactive、Pending、Firing。
Inactive:非活動狀態,表示正在監控,但是還未有任何警報觸發。
Pending:表示這個警報必須被觸發。由於警報可以被分組、壓抑/抑制或靜默/靜音,所以等待驗證,一旦所有的驗證都通過,則將轉到 Firing 狀態。
Firing:將警報發送到 AlertManager,它將按照配置將警報的發送給所有接收者。一旦警報解除,則將狀態轉到 Inactive,如此循環。
沒有配置告警模板時的默認告警格式是這樣的
節點恢復後郵件告知是這樣的
寫了模板後是這樣的
還要重新映射模板文件夾路徑到alertmanager容器里的相對路徑,然後重啟alertmanager,當然,如果目錄下沒有模板文件,則不顯示
告警模板
在alertmanager.yml中修改相關設置
重啟alertmanager
docker restart alertmanager
最終效果不是很好