New Relic이 이를 올바르게 구문 분석할 수 있도록 일부 JSON을 JQ를 사용하여 분할해야 합니다. 왜냐하면 JSON은 대시보드에 푸시될 때 특정 형식으로만 제공되기 때문입니다.
저는 WPCLI와 함께 bash 스크립트를 사용한 다음 JQ를 사용하여 JSON 출력 형식을 지정하고 있습니다.
아래는 내 스크립트입니다.
#!/bin/bash
#for d in /var/www/* ; do
# echo "$d"
#done
for f in /var/www/*/public_html/; do
if [[ -d $f ]]; then
#echo "$f"
cd $f;
SITEURL="$(wp option get siteurl)"
USERS="$(wp user list --fields=display_name,user_email,user_registered,roles --format=json | jq .[])"
PLUGINS="$(wp plugin list --format=json | jq .[])"
echo "${SITEURL}" "${USERS}" "${PLUGINS}"
cd ../.. ;
fi
done
아래는 내가 얻은 결과입니다 ...
cat wp-info-output
http://mytest1.com {
"display_name": "testuser1",
"user_email": "[email protected]",
"user_registered": "2018-11-26 17:44:09",
"roles": "administrator"
} {
"name": "akismet",
"status": "inactive",
"update": "available",
"version": "4.0.8"
}
{
"name": "hello",
"status": "inactive",
"update": "none",
"version": "1.7"
}
이런 모습이 필요해...
[
{
"eventType":"WordpressSite",
"siteurl":"http://mytest1.com"
},
{
"eventType":"WordpressPlugins",
"pluginName": "akismet",
"status": "inactive",
"update": "available",
"version": "4.0.8"
},
{
"eventType":"WordpressPlugins",
"pluginName": "hello",
"status": "inactive",
"update": "none",
"version": "1.7"
}
{
"eventType":"Users",
"display_name": "testuser2",
"user_email": "[email protected]",
"user_registered": "2018-11-26 17:44:04",
"roles": "administrator"
}
]
제 생각에는 jq가 JSON 형식 지정에 대한 답이라고 생각하는데 약간의 어려움이 있습니다.
답변1
모든 JSON 개체를 가져와서 1비트 배열로 혼합하려는 것 같습니다. 시도해 보세요.
siteurl=$(wp option get siteurl)
users=$(
wp user list --fields=display_name,user_email,user_registered,roles --format=json) |
jq '.[] | .eventType = "WordpressUser"'
)
plugins=$( wp plugin list --format=json | jq '.[] | .eventType = "WordpressPlugin"' )
{
printf '{"eventType":"WordpressSite","siteurl":"%s"}\n' "$(wp option get siteurl)"
echo "$plugins"
echo "$users"
} | jq -s .