主頁 >  其他 > Elasticsearch 日志監控方案

Elasticsearch 日志監控方案

2021-08-19 07:09:44 其他

現在大部分公司都會選擇將應用、中間件、系統等日志存盤在 Elasticsearch 中,如何發現日志中的例外資料并且及時告警通知就顯得十分重要,本文將會介紹兩種主流的日志監控方案,分別是 Yelp 公司開源的 ElastAlert 和 Elastic 官方的商業版功能 Watcher,

如下圖所示,日志資料源是一臺 Nginx 服務器,在該服務器上安裝 Filebeat 收集 Nginx 日志并輸出到 Elasticsearch,之后會分別演示用 ElastAlert 和 Watcher 兩種方案監控日志并進行告警,

部署 Nginx

安裝依賴

yum install -y gcc gcc-c++ autoconf pcre pcre-devel make automake wget httpd-tools vim tree zlib-devel

下載安裝包

wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -xzvf nginx-1.14.0.tar.gz

編譯安裝

cd nginx-1.14.0
./configure

配置 Nginx

編輯組態檔 /usr/local/nginx/conf/nginx.conf,在 Nginx 上配置一個靜態網頁服務,

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    server {
        listen  80;
        location / {
            root html;
        }
    }
}

啟動 Nginx:

sbin/nginx

訪問 Nginx:

部署 Filebeat

下載并安裝 Filebeat,

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.14.0-x86_64.rpm
sudo rpm -vi filebeat-7.14.0-x86_64.rpm

編輯 /etc/filebeat/filebeat.yml 組態檔,讀取 Nginx 日志檔案輸出到 Elasticsearch 的 nginx 索引中,后綴是當前日期,

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /usr/local/nginx/logs/*.log
output.elasticsearch:
  hosts: ["192.168.1.8:9200"]
  index: "nginx-%{+yyyy.MM.dd}"
  #username: "elastic"
  #password: "changeme"
setup.ilm.enabled: false
setup.template.name: "nginx"
setup.template.pattern: "nginx-*"

啟動 Filebeat:

systemctl start filebeat

ElastAlert

ElastAlert 是 Yelp 公司開源的一套用 Python 寫的 Elasticsearch 告警框架,可以從 Elasticsearch 當中查詢出匹配規則的資料進行告警,

ElastAlert 有以下特點:

  • 支持多種匹配規則(頻率、閾值、資料變化、黑白名單、變化率等),
  • 支持多種告警型別(郵件、HTTP POST、自定義腳本等),
  • 支持用戶自定義規則和告警型別,
  • 匹配項匯總報警,重復告警抑制,告警失敗重試和過期,
  • 可用性強,狀態資訊保存到 Elasticsearch 的索引中,
  • 支持除錯和審計,

部署 Elastalert

安裝 Python

wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar -zxvf Python-3.6.9.tgz
cd Python-3.6.9
./configure
make && make install

檢查 Python 版本:

python3 -V

安裝依賴

yum install gcc libffi-devel python3-devel openssl-devel -y
pip3 install -U pip
pip3 install "setuptools>=11.3"

安裝 Elastalert

python3 install elastalert

配置 Elastalert

克隆代碼到本地:

git clone https://github.com/Yelp/elastalert.git
cd elastalert

我們可以在 ElastAlert 原始碼檔案的根目錄下找到一個叫做 config.yaml.example 的檔案,修改檔案名為 config.yaml:

mv config.yaml.example  config.yaml

創建存放規則的目錄,

mkdir rules
cd rules

編輯 config.yaml 檔案,修改主配置:

#規則存放的目錄
rules_folder: rules

#運行的頻率
run_every:
  minutes: 1

#ElastAlert 將快取最近一段時間的結果,以防某些日志源不是實時的
buffer_time:
  minutes: 45

#Elasticsearch 地址
es_host: 192.168.1.8

#Elasticsearch 埠
es_port: 9200

#Elasticsearch 用戶名密碼(可選)
#es_username: someusername
#es_password: somepassword

#ElastAlert 元資料存盤索引
writeback_index: elastalert_status

#如果警報因某種原因失敗,ElastAlert將重試發送警報,直到該時間段結束
alert_time_limit:
  days: 2

創建 rules/nginx.yaml 檔案,編輯 rule:

規則內容為:在 1 分鐘內如果查詢 nginx-* 索引的 message 欄位匹配 到 error 5 次就觸發告警,往指定的 URL 發送一個 HTTP POST 請求,

# Alert when the rate of events exceeds a threshold

# (Required)
# Elasticsearch host
es_host: 192.168.1.8

# (Required)
# Elasticsearch port
es_port: 9200

# (OptionaL) Connect with SSL to elasticsearch
#use_ssl: True

# (Optional) basic-auth username and password for elasticsearch
#es_username: someusername
#es_password: somepassword

# (Required)
# Rule name, must be unique
name: nginx rule

# (Required)
# Type of alert.
# the frequency rule type alerts when num_events events occur with timeframe time
type: frequency

# (Required)
# Index to search, wildcard supported
index: nginx-*

# (Required, frequency specific)
# Alert when this many documents matching the query occur within a timeframe
num_events: 5

# (Required, frequency specific)
# num_events must occur within this amount of time to trigger an alert
timeframe:
  minutes: 1

# (Required)
# A list of elasticsearch filters used for find events
# These filters are joined with AND and nested in a filtered query
# For more info: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl.html
filter:
- term:
    message: "error"

# (Required)
# The alert is use when a match is found
alert:
- "post"

http_post_url: "https://webhook.site/2f64f4b3-8b43-488c-b2df-695136079e36"

https://webhook.site 網站提供了測驗的 Webhook 介面,每個人的 URL 都是獨立的,拷貝這個 URL 復制到 http_post_url 中,

ElastAlert 會把執行記錄存放到一個索引中,可以方便我們審核和除錯,使用以下命令創建這個索引的,默認情況下,索引名叫 elastalert_status,

root@ydt-net-es-node1:/software #elastalert-create-index
Enter Elasticsearch host: 192.168.1.8
Enter Elasticsearch port: 9200
Use SSL? t/f: f
#如果有認證輸入用戶名密碼
Enter optional basic-auth username (or leave blank): 
Enter optional basic-auth password (or leave blank): 
Enter optional Elasticsearch URL prefix (prepends a string to the URL of every request): 
New index name? (Default elastalert_status) 
New alias name? (Default elastalert_alerts) 
Name of existing index to copy? (Default None) 
Elastic Version: 7.9.3
Reading Elastic 6 index mappings:
Reading index mapping 'es_mappings/6/silence.json'
Reading index mapping 'es_mappings/6/elastalert_status.json'
Reading index mapping 'es_mappings/6/elastalert.json'
Reading index mapping 'es_mappings/6/past_elastalert.json'
Reading index mapping 'es_mappings/6/elastalert_error.json'
New index elastalert_status created
Done!

發送 2 個請求,1 個是正確請求,1 個是錯誤請求,

> curl http://192.168.1.134 -I
HTTP/1.1 200 OK
Server: nginx/1.14.2
Date: Mon, 16 Aug 2021 07:28:42 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Wed, 16 Jun 2021 02:46:13 GMT
Connection: keep-alive
ETag: "60c965f5-264"
Accept-Ranges: bytes

> curl http://192.168.1.134/xxxxxx -I
HTTP/1.1 404 Not Found
Server: nginx/1.14.2
Date: Mon, 16 Aug 2021 07:28:43 GMT
Content-Type: text/html
Content-Length: 169
Connection: keep-alive

在 Kibana 上可以看到 Nginx 的日志,錯誤請求會在 access.log 和 error.log 各寫一次,因此這里看到 3 條記錄,

運行 elastalert-test-rule 命令檢驗組態檔是否正確并且可以看到規則匹配的次數,elastalert-test-rule 命令并不會真正觸發告警,

> elastalert-test-rule rules/nginx.yaml
INFO:elastalert:Note: In debug mode, alerts will be logged to console but NOT actually sent.
            To send them but remain verbose, use --verbose instead.
Didn't get any results.
INFO:elastalert:Note: In debug mode, alerts will be logged to console but NOT actually sent.
                To send them but remain verbose, use --verbose instead.
1 rules loaded
INFO:apscheduler.scheduler:Adding job tentatively -- it will be properly scheduled when the scheduler starts
#匹配一次
INFO:elastalert:Queried rule nginx rule from 2021-08-16 15:28 CST to 2021-08-16 15:29 CST: 1 / 1 hits 

Would have written the following documents to writeback index (default is elastalert_status):

elastalert_status - {'rule_name': 'nginx rule', 'endtime': datetime.datetime(2021, 8, 16, 7, 29, 30, 422431, tzinfo=tzutc()), 'starttime': datetime.datetime(2021, 8, 16, 7, 28, 29, 822431, tzinfo=tzutc()), 'matches': 0, 'hits': 1, '@timestamp': datetime.datetime(2021, 8, 16, 7, 29, 30, 527080, tzinfo=tzutc()), 'time_taken': 0.02203655242919922}

1分鐘內連續發送錯誤請求 5 次達到觸發告警的閾值:

for i in {1..3};do curl http://192.168.1.134/xxxxxx -I;done

此時可以看到發送的告警格式,

> elastalert-test-rule rules/nginx.yaml
INFO:elastalert:Note: In debug mode, alerts will be logged to console but NOT actually sent.
            To send them but remain verbose, use --verbose instead.
Didn't get any results.
INFO:elastalert:Note: In debug mode, alerts will be logged to console but NOT actually sent.
                To send them but remain verbose, use --verbose instead.
1 rules loaded
INFO:apscheduler.scheduler:Adding job tentatively -- it will be properly scheduled when the scheduler starts
INFO:elastalert:Queried rule nginx rule from 2021-08-16 15:33 CST to 2021-08-16 15:34 CST: 5 / 5 hits
INFO:elastalert:Alert for nginx rule at 2021-08-16T07:34:26.230Z:
INFO:elastalert:nginx rule

At least 5 events occurred between 2021-08-16 15:33 CST and 2021-08-16 15:34 CST

@timestamp: 2021-08-16T07:34:26.230Z
_id: 0CDiTXsBCANUjLffFM2O
_index: nginx-2021.08.16
_type: _doc
agent: {
    "ephemeral_id": "4ee4bd89-cb8e-43fb-9331-476c229a5480",
    "hostname": "nginx-plus1",
    "id": "629442a8-34ab-40db-80a8-16e4fda8dec7",
    "name": "nginx-plus1",
    "type": "filebeat",
    "version": "7.14.0"
}
ecs: {
    "version": "1.10.0"
}
host: {
    "name": "nginx-plus1"
}
input: {
    "type": "log"
}
log: {
    "file": {
        "path": "/usr/local/nginx/logs/error.log"
    },
    "offset": 16944
}
message: 2021/08/16 15:34:22 [error] 4022#0: *40 open() "/usr/local/nginx/html/xxxxxx" failed (2: No such file or directory), client: 192.168.1.35, server: , request: "GET /xxxxxx HTTP/1.1", host: "192.168.1.134"
num_hits: 5
num_matches: 1


Would have written the following documents to writeback index (default is elastalert_status):

silence - {'exponent': 0, 'rule_name': 'nginx rule', '@timestamp': datetime.datetime(2021, 8, 16, 7, 34, 42, 866184, tzinfo=tzutc()), 'until': datetime.datetime(2021, 8, 16, 7, 35, 42, 866174, tzinfo=tzutc())}

elastalert_status - {'rule_name': 'nginx rule', 'endtime': datetime.datetime(2021, 8, 16, 7, 34, 42, 810992, tzinfo=tzutc()), 'starttime': datetime.datetime(2021, 8, 16, 7, 33, 42, 210992, tzinfo=tzutc()), 'matches': 1, 'hits': 5, '@timestamp': datetime.datetime(2021, 8, 16, 7, 34, 42, 868045, tzinfo=tzutc()), 'time_taken': 0.015259981155395508}

使用以下命令運行 elastalert,可以看到觸發了告警:

> elastalert --verbose --rule rules/nginx.yaml
1 rules loaded
INFO:elastalert:Starting up
INFO:elastalert:Disabled rules are: []
INFO:elastalert:Sleeping for 59.999839 seconds
INFO:elastalert:Queried rule nginx rule from 2021-08-16 14:54 CST to 2021-08-16 15:39 CST: 7 / 7 hits
INFO:elastalert:HTTP Post alert sent.
INFO:elastalert:Ran nginx rule from 2021-08-16 14:54 CST to 2021-08-16 15:39 CST: 7 query hits (0 already seen), 1 matches, 1 alerts sent

訪問 https://webhook.site 網站可以看到 ElastAlert 發送的 HTTP POST 請求,

查詢 elastalert_status 索引可以看到 ElastAlert 的執行記錄,

GET elastalert_status/_search
#回傳結果
{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "elastalert_status",
        "_type" : "_doc",
        "_id" : "1SDmTXsBCANUjLff0M1Q",
        "_score" : 1.0,
        "_source" : {
          "match_body" : {
            "input" : {
              "type" : "log"
            },
            "agent" : {
              "hostname" : "nginx-plus1",
              "name" : "nginx-plus1",
              "id" : "629442a8-34ab-40db-80a8-16e4fda8dec7",
              "ephemeral_id" : "4ee4bd89-cb8e-43fb-9331-476c229a5480",
              "type" : "filebeat",
              "version" : "7.14.0"
            },
            "@timestamp" : "2021-08-16T07:34:26.230Z",
            "ecs" : {
              "version" : "1.10.0"
            },
            "log" : {
              "file" : {
                "path" : "/usr/local/nginx/logs/error.log"
              },
              "offset" : 16740
            },
            "host" : {
              "name" : "nginx-plus1"
            },
            "message" : "2021/08/16 15:34:22 [error] 4022#0: *39 open() \"/usr/local/nginx/html/xxxxxx\" failed (2: No such file or directory), client: 192.168.1.35, server: , request: \"GET /xxxxxx HTTP/1.1\", host: \"192.168.1.134\"",
            "_id" : "zyDiTXsBCANUjLffFM2O",
            "_index" : "nginx-2021.08.16",
            "_type" : "_doc",
            "num_hits" : 7,
            "num_matches" : 1
          },
          "rule_name" : "nginx rule",
          "alert_info" : {
            "type" : "http_post",
            "http_post_webhook_url" : [
              "https://webhook.site/2f64f4b3-8b43-488c-b2df-695136079e36"
            ]
          },
          "alert_sent" : true,
          "alert_time" : "2021-08-16T07:39:35.185929Z",
          "match_time" : "2021-08-16T07:34:26.230Z",
          "@timestamp" : "2021-08-16T07:39:37.418536Z"
        }
      }
    ]
  }
}

Watcher

Watcher 是 Elastic 官方提供的一個對日志資料監控和報警的功能,Watcher 屬于收費功能,我們可以在 License Management 中開啟 30 天的試用,

Watcher 由以下 5 個部分組成:

  • trigger:定義 watcher 觸發的時間或者周期,
  • input:定義資料的來源,可以是一個索引或者 HTTP 請求的結果等等,如果沒有設定輸入將為空,
  • condition:定義執行 action 觸發的條件,如果沒有設定默認總是觸發 action,
  • transform(可選):修改 watcher 的 payload,
  • actions:定義執行的動作,例如 email,webhook,index,logging,slack 等等,

創建 1 個 Watcher:

  • trigger:每分鐘運行一次,
  • input:通配符匹配 nginx-* 的索引,查詢 message 欄位中的 error 關鍵字,每次針對在過去5分鐘內發生的事件來進行查詢,
  • condition:如果在查詢結果中,匹配到 1 次,就觸發 action,
  • action:向指定 URL 發送一個 HTTP POST 請求,
PUT _watcher/watch/nginx-watcher
{
  "trigger": {
     "schedule" : {
      "interval" : "1m"
    }
  },
  "input": {
    "search": {
      "request": {
        "indices": [
          "nginx-*"
        ],
        "body": {
          "query": {
            "bool": {
              "must": {
                "match": {
                  "message": "error"
                }
              },
              "filter": {
                "range": {
                  "@timestamp": {
                    "from": "{{ctx.trigger.scheduled_time}}||-5m",
                    "to": "{{ctx.trigger.triggered_time}}"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "condition": {
    "compare": {
      "ctx.payload.hits.total": {
        "gt": 0
      }
    }
  },
  "actions": {
    "my_webhook": {
      "throttle_period": "2m",
      "webhook": {
        "method": "POST",
        "url": "https://webhook.site/2f64f4b3-8b43-488c-b2df-695136079e36",
        "body": "Number of Nginx Error: {{ctx.payload.hits.total}}"
      }
    }
  }
}

查看剛剛創建的 watcher:

1分鐘內連續發送 5 次錯誤請求,

for i in {1..3};do curl http://192.168.1.134/xxxxxx -I;done

查看 watcher 狀態,可以看到觸發了 action,

訪問 https://webhook.site 可以看到最新的 Webhook 事件已經被觸發了,而且它的 Raw Content 和我們之前定義的 body 格式是一致的,

如果我們設定的 watcher 間隔時間比較久,Elasticsearch 為了方便我們測驗,提供了_execute 介面,通過執行下面命令可以立即運行一下我們的 watcher,

PUT _watcher/watch/nginx-watcher/_execute

參考資料

  • https://zhuanlan.zhihu.com/p/386722918
  • https://elastalert.readthedocs.io/
  • https://www.elastic.co/guide/en/elasticsearch/reference/7.14/xpack-alerting.html
  • https://blog.csdn.net/UbuntuTouch/article/details/106298651
  • https://elasticstack.blog.csdn.net/article/details/105340379
  • https://elasticstack.blog.csdn.net/article/details/103820572

歡迎關注

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294660.html

標籤:其他

上一篇:資料結構_希爾排序(直接插入排序)

下一篇:Hadoop3.x 之原始碼決議完整使用 (第十三章)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more